package Commandes;

import Composite.Element;
import fichiers.*;
import java.io.File;
import javax.swing.JOptionPane;

public class Commande_RenommerElement implements Commande {

    private Element e;
    private String nom;
    private String ancienNom;

    public Commande_RenommerElement(Element e, String nom) {

        this.e = e;
        this.nom = nom;
        this.ancienNom = "";

    }

    public boolean execute() {

            int index = e.getFichierCourant().getAbsolutePath().lastIndexOf('\\');
            String dest = e.getFichierCourant().getAbsolutePath().substring(0, index+1);
            File destination = new File(dest+nom+e.getExtension());
            boolean b = e.getFichierCourant().renameTo(destination);
            if (!b) {
            JOptionPane.showConfirmDialog(null,"Impossible de renommer ce fichier", "Une erreur est survenue",JOptionPane.CLOSED_OPTION,JOptionPane.ERROR_MESSAGE);
            } else {
                this.ancienNom = new String(e.toString());
                e.setFichierCourant(destination);
                e.setNom(nom);

                
            }

           return b;
    }

    public boolean cancel() {

            int index = e.getFichierCourant().getAbsolutePath().lastIndexOf('\\');
            String dest = e.getFichierCourant().getAbsolutePath().substring(0, index+1);
            File destination = new File(dest+ancienNom+e.getExtension());
            boolean b = e.getFichierCourant().renameTo(destination);
            if (!b) {
            JOptionPane.showConfirmDialog(null,"Impossible de renommer ce fichier", "Une erreur est survenue",JOptionPane.CLOSED_OPTION,JOptionPane.ERROR_MESSAGE);
            } else {
                  
                 String temp = nom;
                 e.setFichierCourant(destination);
                 this.e.setNom(this.ancienNom);              
                 this.nom = new String(nom);
                 this.ancienNom = temp;
            }

           return b;
    }

    public String getNomCommande() {
        return new String(" ( Renommer: " + ancienNom + " ) ");
    }
}
 
